import { defineStore } from 'pinia';
import axios from "axios";
import {setAuthToken} from "@/api/strapi";

// 定义状态类型
interface UserState {
    userInfo: {
        username: string,
        email: string,
        provider?: string,
    } | null;
    isLoggedIn: boolean;
}

// 定义 actions 类型
interface UserActions {
    login(email: string, password: string): Promise<any>;
    logout(): void;
}

export const useUserStore = defineStore<'user', UserState, {}, UserActions>('user', {
    state: () => ({
        userInfo: null, // 用户信息，初始为 null
        isLoggedIn: false // 用户是否登录，初始为 false
    }),
    actions: {
        // 登录操作
        login(email: string, password: string): Promise<any> {
                // 替换为你的 Strapi 登录 API 地址
            return axios.post(import.meta.env.VITE_STRAPI_API_URL + '/auth/local', {
                    identifier: email,
                    password: password
                }).then( (response: any) => {
                     // 登录成功，存储 token 并重定向等操作
                     const { jwt } = response.data;
                     localStorage.setItem('strapi-jwt', jwt);
                     // 这里可以添加重定向逻辑，例如跳转到首页
                     setAuthToken(jwt)
                 })
        },
        // 登出操作
        logout() {
            this.userInfo = null;
            this.isLoggedIn = false;
            setAuthToken('')
        }
    },
    // 修改持久化配置
    persist: true
});
